C++에서는 모든 표현식이 다음 중 하나로 결과가 나옵니다: 왼쪽값 또는 오른쪽값이 구분은 표현식이 객체의 정체성 (어디에 있는지) 또는 그 값 (내용이 무엇인지)를 참조하는지 여부를 결정합니다.
1. 정체성과 내용물
한 왼쪽값 (위치값)은 지속적인 메모리 주소를 가진 객체를 나타냅니다. 이를 램 내의 라벨이 붙은 상자로 생각해 보세요. 반대로, 오른쪽값 (읽기값)은 일시적인 것입니다. 이는 프로그래머가 접근할 수 없는 주소를 가지지 않은 임시 결과나 리터럴을 나타냅니다.
2. 기능적 전이
왼쪽값은 오른쪽값으로 작동할 수 있습니다(컴파일러는 상자 안의 값을 단순히 가져옵니다). 그러나 역방향은 금지되어 있습니다. 오른쪽값을 왼쪽값이 필요한 곳에 사용할 수 없습니다. 예를 들어, `&42`처럼 리터럴 숫자의 주소를 취할 수 없습니다. 왜냐하면 이 값은 지속적인 정체성을 갖지 않기 때문입니다. &42 이는 지속적인 정체성이 없기 때문입니다.
$$ \text{왼쪽값} \xrightarrow{\text{변환}} \text{오른쪽값} \quad (\text{허용됨}) $$
$$ \text{Rvalue} \xrightarrow{\text{Assignment}} \text{Lvalue} \quad (\text{Forbidden}) $$
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>